import request from '@/utils/request'

// 成绩管理API
const scoreAPI = {
    // 获取所有成绩数据
    getAllScores() {
        return request({
            url: '/api/score/listAll',
            method: 'get'
        }).catch(error => {
            console.error('获取所有成绩数据失败:', error)
            throw error
        })
    },

    // 根据学生姓名获取成绩数据
    getScoresByName(name) {
        return request({
            url: `/api/score/student/${name}`,
            method: 'get'
        }).catch(error => {
            console.error(`获取学生 ${name} 的成绩数据失败:`, error)
            throw error
        })
    },

    // 保存成绩
    save(score) {
        return request({
            url: '/api/score/save',
            method: 'post',
            data: score
        }).catch(error => {
            console.error('保存成绩失败:', error)
            throw error
        })
    },

    // 更新成绩
    update(score) {
        return request({
            url: '/api/score/update',
            method: 'post',
            data: score
        }).catch(error => {
            console.error('更新成绩失败:', error)
            throw error
        })
    },

    // 根据ID删除成绩
    removeById(id) {
        return request({
            url: '/api/score/removeById',
            method: 'delete',
            params: { id }
        }).catch(error => {
            console.error(`删除ID为 ${id} 的成绩失败:`, error)
            throw error
        })
    },

    // 删除所有成绩
    removeAll() {
        return request({
            url: '/api/score/remove',
            method: 'delete'
        }).catch(error => {
            console.error('删除所有成绩失败:', error)
            throw error
        })
    },

    // 根据ID查询成绩
    getById(id) {
        return request({
            url: '/api/score/listById',
            method: 'get',
            params: { id }
        }).catch(error => {
            console.error(`查询ID为 ${id} 的成绩失败:`, error)
            throw error
        })
    },

    // 分页查询成绩
    getPage(current = 1, size = 10) {
        return request({
            url: '/api/score/page',
            method: 'get',
            params: { current, size }
        }).catch(error => {
            console.error('分页查询成绩失败:', error)
            throw error
        })
    },

    // 导出管理员所有成绩数据
    exportAdminData() {
        return request({
            url: '/api/file/fileOutputAdmin',
            method: 'post',
            responseType: 'blob',
            headers: {
                'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
            }
        }).catch(error => {
            console.error('导出管理员成绩数据失败:', error)
            throw error
        })
    },

    // 导出学生成绩数据
    exportStudentData(name) {
        return request({
            url: '/api/file/fileOutputStudent',
            method: 'post',
            params: { name },
            responseType: 'blob',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
            }
        }).catch(error => {
            console.error(`导出学生 ${name} 的成绩数据失败:`, error)
            throw error
        })
    },

    // 计算成绩平均分
    calculateAverages(studentId = null) {
        return request({
            url: '/api/score/calculateAverages',  // 修改为与后端控制器匹配的URL
            method: 'get',
            params: { studentId }
        }).catch(error => {
            console.error('计算成绩平均分失败:', error)
            throw error
        })
    },

    // 计算学分绩
    calculateCreditScore(stuId = null) {
        return request({
            url: '/api/score/calculateScore',
            method: 'get',
            params: { stuId }
        }).catch(error => {
            console.error('计算学分绩失败:', error)
            throw error
        })
    }
}

export default scoreAPI